<html>
    <head>
        <title>概览</title>
    </head>
    <body>
        <script>
            // 事件总线

                    /*
                        事件总线是将消息从"发送者" 传输到 "接受者" 的中介。

                        通过这种方式，它提供了对象、服务 和应用程序之间松散耦合的通信。
                    */

                    /*
                        一、事件总线类型

                                ABP提供两种类型的事件总线:

                                       1、本地事件总线 Local Event Bus

                                       2、分布式事件总线  Distributed Event Bus
                    */

                    /*
                        二、事件总线选择向导

                                你可能会混淆在应用程序中使用哪种时间总线。这里有几个场景：

                                       1、如果你正在构建微服务系统，请使用分布式事件总线进行"微服务间通信"。

                                       2、如果你正在发布一个事件并且总是在同一个微服务中处理它，你可以为该事件使用本地事件总线。

                                       3、如果你正在构建模块化单体应用程序，请使用分布式事件总线进行模块间通信。
                                          
                                            由于分布式事件总线默认在进程内工作（除非你配置了真正的分布式事件总线提供程序）。

                                            这样，如果你稍后迁移到微服务系统，这些模块间通信可以成为微服务间通信，而无需任何代码更改（只需安装分布式事件总线提供包）

                                            如果你正在发布事件并且始终在同一模块中处理它，则可以为该事件使用本地事件总线。

                                       4、如果你正在构建一个单体（非模块化）应用程序，你始终可以使用本地事件总线。

                                分布式事件总线默认在进程中工作，除非你不配置真正的分布式事件总线提供程序，否则它的工作方式与本地事件总线相同。

                                一旦你配置了真正的分布式事件总线提供程序，你的所有事件都将成为分布式的。

                                因此，只有当事件在任何情况下都应该始终保持在进程中时，才使用本地事件总线。对于其他类型的事件，请使用分布式事件总线。
                    */

                    /*
                        三、本地事件总线 与 分布式事件总线 的技术差异：

                                本地和分布式事件总线之间存在一些技术差异：

                                    1、你可以使用本地事件总线发送实体或其他不可序列化的对象，因为这些对象在事件发布时没有序列化/反序列化。

                                                另一方面，一旦你使用真正的分布式事件总线提供程序，分布式事件总线就会序列化/反序列化对象。

                                    2、本地事件总线在数据库级别始终是事务性的。

                                                对于分布式事件总线，一旦使用真正的分布式事件总线提供程序，你应该启用收件箱/发件箱模式以确保数据展示一致性。
                    */
        </script>
    </body>
</html>